<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        body{
            background-color: pink;
        }
        .title{
            line-height: 40px;
            font-weight: bold;
            text-align: center;
        }
        .list .item{
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin: 20px;
        }
        .list .item img{
            width: 60px;
            border-radius: 50%;
        }
        

    </style>
</head>
<body>
    
    <!-- 由于Vue实例对象挂载到#app表示的dom节点上, 所以Vue实例对象身上定义的数据和方法就可以在这个dom节点内部使用( 在dom节点外部不可以使用 ) -->
    <div id="app">
        <div class="title">任务列表</div>
        <div class="list">
            <!-- 列表渲染, 使用data中定义的数据 渲染出多个任务,形成一个列表 -->
            <!-- 列表渲染, 使用vuejs提供的指令 v-for , 也可以配合 key 属性一起使用 -->
            <!-- 列表渲染, v-for="(item,index) in tasklist" -->

            <!-- {{ 表达式 或 变量 }}  也叫作插值表达式( 双大括号 ) , 会解析/计算内部表达式或变量的值  , 只能用在标签的内容区-->
            <!-- 属性值的绑定, 当属性值中有变量,需要计算时, 属性名称前必须有v-bind: 否则属性值无法正常解析 -->
            <!-- v-bind:属性名="属性值" , 属性值可以是变量,也可以是表达式 -->
            <!-- 如果属性值中没有变量,也不需要计算, 就是固定的字符串, 则不需要在属性名前面添加 v-bind:  -->
            <div class="item" v-for="(item,index) in tasklist" v-bind:key="index">
                <div class="left">
                    <img v-bind:src="item.pic" alt="">
                </div>
                <div class="middle">
                    <div class="name"> {{ item.name }} </div>
                    <div class="desc"> {{ item.desc }} </div>
                </div>
                <div class="right">
                    <button> {{ item.status == 1 ? '去完成' : (item.status == 2 ? '领取' : '已领取') }} </button>
                </div>
            </div>
        </div>
    </div>

    <!-- 这个js文件对外暴露了一个Vue构造函数, 我们可以使用Vue构造函数实例化Vue对象 -->
    <script src="./vue-2.5.21.js"></script>

    <script>
        //实例化Vue对象
        var v = new Vue({
            //这个位置放置Vuejs规定的一些选项( 这些选项的名字是固定的,另外这些选项是可选的 )
            el:'#app', //el Vue实例挂载的dom节点
            data: {
                tasklist:[
                    { id:1, pic:'./pic.png', name:'咪咕视频送流量',desc:'每月领500MB流量',status:1 },
                    { id:2, pic:'./pic.png', name:'咪咕视频送福利',desc:'每月领800MB流量',status:2 },
                    { id:3, pic:'./pic.png', name:'咪咕视频送套餐折扣券',desc:'每月领1500MB流量',status:3 },
                    { id:4, pic:'./pic.png', name:'咪咕视频送超级秒杀',desc:'每月领5500MB流量',status:1 },
                ]
            } , //data 定义响应式数据, data的类型可以是对象,也可以是函数
            //data: function(){ return {} }, //使用函数的写法,可以在实例化对象时生成一个新的数据
            computed: {} , //computed 定义计算属性
            watch: {} , //watch 定义数据监听
            methods: {} , //methods 定义方法(函数)
            filters: {} , //filters 定义过滤器
            directives: {} , //directives 定义自定义指令
            components: {} , //components 注册局部组件
        })
        
        //我们接下来使用vueJS的声明式编程语法,实现 <数据驱动视图更新>. 

    </script>
</body>
</html>